#include <iostream>
#include <unordered_map>
#include <algorithm>

using namespace std;

const int N = 2e4 + 10;
int n, pos;
int a[N], b[N];
int disc[N * 2];
int f[N * 2];
unordered_map<int, int> id;

int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++)
    {
        cin >> a[i] >> b[i];
        disc[++pos] = a[i]; disc[++pos] = b[i];
    }
    // 离散化
    sort(disc + 1, disc + 1 + pos);
    pos = unique(disc + 1, disc + 1 + pos) - (disc + 1);
    for(int i = 1; i <= pos; i++)
    {
        id[disc[i]] = i; // 哈希表保存最终结果
    }
    // 在离散化基础上，做差分
    for(int i = 1; i <= n; i++)
    {
        int left = id[a[i]], right = id[b[i]];
        f[left]++, f[right]--;
    }
    // 还原数组
    for(int i = 1; i <= pos; i++) f[i] += f[i - 1];
    // 统计结果
    int ret = 0;
    for(int i = 1; i <= pos; i++)
    {
        int j = i; 
        while(j <= pos && f[j] > 0) j++;
        // 累加上原始的长度
        ret += disc[j] - disc[i];
        i = j;
    }
    cout << ret << endl;
    return 0;
}